import { AuthTypeEnum, RoleTypeEnum } from "@/enums/LoginEnum";
import { FileResourcePermissionTypeEnum, FileUploadPolicyEnum, ReviewStatusEnum } from "@/enums/PublicEnum";
import { DocumentFileType } from "@/hooks/file/type";

export interface FriendListResult {
  id: number;
  botId: number;
  friendBotId: number;
  /** 智能体名称 */
  botName: string;
  backImage: string;
  /** 智能体描述 */
  description: string;
  /** 认证类型 */
  certificationType: AuthTypeEnum
  /** 创建时间 */
  createTime: string;
  tags: LabelListResult[]
  /** 智能体头像 */
  iconFileUrl: string
  uuid: string
}

export interface CircleListResult {
  /** 圈子id */
  id: number;
  /** 圈子uuid */
  uuid: string;
  /** 圈子名称 */
  name: string;
  /** 圈子头像 */
  avatar: string;
  /** 简介（限制255字符） */
  description: string;
  /** 创建时间 */
  createTime: string;
  /** 角色类型[SUPER_ADMIN:超级管理员;ADMIN:管理员;MEMBER:成员] */
  roleType: RoleTypeEnum;
}

export interface LabelListResult {
  id: number;
  label: string;
  botNameList: string[]
  /** 创建时间 */
  createTime: string;
  /** 标签成员数量 */
  labelUserCount: number
  botLabelId: number
}

export interface FriendApplyListResult {
  /** 申请人id */
  botId: number;
  /** 申请人名称 */
  applyName: string;
  /** 申请人电话 */
  applyPersonPhone: string;
  /** 申请人头像 */
  iconFileUrl: string
  /** 认证类型 */
  certificationType: AuthTypeEnum
  /** 被审核人id */
  reviewId: number;
  /** 审核状态(0:待审核;1:审核通过;2:审核不通过) */
  reviewStatus: ReviewStatusEnum;
  /** 审核人姓名 */
  reviewerName: string;
  /** 审核备注/意见 */
  reviewContent: string;
  /** 审核时间 */
  reviewTime: string;
  id: number;
  /** 创建人 */
  createBy: number;
  /** 创建时间 */
  createTime: string;
  /** 更新人 */
  updateBy: number;
  /** 更新时间 */
  updateTime: string;
  /** 是否删除 */
  deleted: boolean;
  /** 租户id */
  tenantId: number;
  /** 申请说明 */
  applyContent: string;
}

export interface FriendApplyDetailResult extends FriendApplyListResult {
  uuid: string
}

export interface FriendDetailResult {
  botFriendMapId: number;
  botName: string;
  description: string;
  tags: LabelListResult[];
  sharedFilesCount: number;
  receivedFilesCount: number;
  iconFileUrl: string;
}

export interface LabelFriendListResult {
  botFriendLabelId: number;
  botName: string;
  certificationType: AuthTypeEnum;
  description: string;
  iconFileUrl: string;
}

export interface AddCircleData {
  /** 圈子名称 */
  name: string;
  /** 圈子头像 */
  avatar: string;
  /** 简介（限制255字符） */
  description: string;
}

export interface CircleDetailResult {
  id: number;
  /** 圈子id */
  uuid: string;
  /** 圈子名称 */
  name: string;
  /** 圈子头像 */
  avatar: string;
  /** 简介（限制255字符） */
  description: string;
  /** 角色类型[SUPER_ADMIN:超级管理员;ADMIN:管理员;MEMBER:成员] */
  roleType: RoleTypeEnum;
  /** 创建时间 */
  createTime: string;
  /** 认证类型 */
  certificationType: AuthTypeEnum;
  /** 认证名称 */
  certificationName: string
  /** 管理员数 */
  adminNum: number;
  /** 二维码 */
  qrCodeUrl: string;
  /** 是否开启加入审核 0 否 1 是 */
  joinAuditEnabled: 0 | 1;
  /** 圈子状态：1 正常；0 解散 */
  status: 0 | 1;
  /** 文件上传权限策略，控制全局策略 */
  fileUploadPolicy: FileUploadPolicyEnum;
  /** 成员数 */
  memberNum: number
  /** 文件数 */
  fileNum: number
  /** 是否加入 1 加入 0 否 */
  join: 0 | 1
  /** 审核状态 */
  reviewStatus?: ReviewStatusEnum | null
  /** 是否有上传文件的权限 1 是 0 否 */
  fileUploadPerm: 0 | 1
}

export interface UpdateCircleInfoData {
  id: number
  /** 圈子名称 */
  name?: string
  /** 圈子头像 */
  avatar?: string
  /** 简介（限制255字符） */
  description?: string
  /** 是否开启加入审核 1 是 0 否 */
  joinAuditEnabled?: 0 | 1
  /** 文件上传权限策略，控制全局策略 */
  fileUploadPolicy?: FileUploadPolicyEnum
}

export interface CircleMemberListResult {
  /** 成员id */
  id: number;
  /** 创建人 */
  createBy: number;
  /** 创建时间 */
  createTime: string;
  /** 更新人 */
  updateBy: number;
  /** 更新时间 */
  updateTime: string;
  /** 是否删除 */
  deleted: boolean;
  /** 租户id */
  tenantId: number;
  /** 智能体id */
  botId: number;
  /** 显示名称 */
  displayName: string;
  /** 智能体名称 */
  botName: string;
  /** 智能体头像 */
  iconFileUrl: string
  /** 描述 */
  describe: string;
  /** 圈子id */
  circleId: number;
  /** 加入时间 */
  joinedAt: string;
  /** 角色类型[SUPER_ADMIN:超级管理员;ADMIN:管理员;MEMBER:成员] */
  roleType: RoleTypeEnum;
  /** 圈子身份id */
  circleIdentityId: number;
  /** 圈子身份名称 */
  identityName: string;
  /** 圈子状态：1 正常；0 退出 */
  status: 0 | 1;
  /** 排序 */
  sort: number;
  /** 认证类型 */
  certificationType: AuthTypeEnum;
  /** 是否激活 1 是 0 否 */
  isActivate: 0 | 1;
  /** 智能体uuid */
  botUUid: string
}

export interface SaveFileUploadPermData {
  id: number;
  /** 文件上传权限策略，控制全局策略 */
  fileUploadPolicy: FileUploadPolicyEnum;
  memberIds: number[]
}


export interface CircleMemberDetailResult {
  /** 智能体ID */
  botId: number;
  /** 显示名称 */
  displayName: string;
  /** 描述 */
  describe: string;
  /** 圈子 id */
  circleId: number;
  /** 加入时间 */
  joinedAt: string;
  /** 角色类型[SUPER_ADMIN:超级管理员;ADMIN:管理员;MEMBER:成员] */
  roleType: RoleTypeEnum;
  /** 圈子身份 ID */
  circleIdentityId?: number;
  /** 身份名称 */
  identityName?: string;
  /** 圈子状态：1 正常；0 退出 */
  status: 0 | 1;
  /** 排序,超管默认 0，排最前。管理员可以用自增id，成员加入则用当前时间戳 */
  sort: number;
  /** 智能体显示名称 */
  botName: string;
  /** 智能体描述 */
  botDescribe: string;
  /** 认证类型 */
  certificationType: AuthTypeEnum;
  /** 认证类型 */
  isActivate: 0 | 1;
  /** 智能体图标URL */
  iconFileUrl: string;
  /** 成员id */
  id: number;
  /** 创建人 */
  createBy: number;
  /** 创建时间 */
  createTime: string;
  /** 更新人 */
  updateBy: number;
  /** 更新时间 */
  updateTime: string;
  /** 逻辑删除字段，默认false */
  deleted: boolean;
  /** 租户id */
  tenantId: number;
  /** 操作人身份 */
  currentRoleType: RoleTypeEnum;
}

export interface CircleIdentityListResult {
  /** 名称 */
  name: string;
  /** 排序 */
  sort: number;
  /** 圈子 id */
  circleId: number;
  /** 成员集合 */
  cirCleBotList: string[];
  /** 成员集合 */
  id: number;
  /** 创建人 */
  createBy: number;
  /** 创建时间 */
  createTime: string;
  /** 更新人 */
  updateBy: number;
  /** 更新时间 */
  updateTime: string;
  /** 逻辑删除字段，默认false */
  deleted: boolean;
  /** 租户id */
  tenantId: number;
}

export interface UpdateCircleMemberInfoData {
  /** 成员ID */
  memberId: number
  /** 圈子ID */
  circleId: number
  /** 显示名称 */
  displayName: string
  /** 描述备注 */
  describe: string
  /** 圈子身份ID */
  circleIdentityId?: number
  /** 角色类型 */
  roleType: RoleTypeEnum
}

export interface CircleFileListResult {
  id: number
  /** 文件名称 */
  fileName: string;
  /** 文件UUID */
  fileUuid: string;
  /** 文件地址 */
  filePathUrl: string;
  /** 文件大小 */
  fileSize: number;
  /** 文件后缀 */
  fileSuffix: DocumentFileType;
  /** 文件ID */
  fileId: number;
  /** 文件共享人名称 */
  displayName: string
  /** 文件共享人头像 */
  iconFileUrl: string
  /** 文件权限类型 */
  fileCallPolicy: FileUploadPolicyEnum
}

export interface CircleJoinApplyListResult {
  /** 审核记录ID */
  id: number;
  /** 圈子ID */
  circleId: number;
  /** 圈子名称 */
  circleName: string;
  /** 申请人UUID */
  botUUid: string
  /** 申请人名称 */
  applyName: string;
  /** 描述备注 */
  describe: string
  /** 审核状态 */
  reviewStatus: number;
  /** 审核备注/意见 */
  reviewContent: string;
  /** 申请时间 */
  createTime: string;
  /** 申请人头像 */
  botAvatar: string;
  /** 申请人电话 */
  applyPersonPhone: string;
  /** 认证类型 */
  certificationType: AuthTypeEnum
  /** 智能体头像 */
  iconFileUrl: string;
  identityName: string
}

export interface AuditCircleJoinData {
  /** 审核记录ID */
  id: number;
  /** 审核状态 */
  reviewStatus: ReviewStatusEnum;
  /** 显示名称 */
  displayName?: string
  /** 描述备注 */
  describe?: string
  /** 圈子身份ID */
  circleIdentityId?: number
}


